论文推荐| 王密:高分辨率光学卫星影像高精度在轨实时云检测的流式计算
《测绘学报》
构建与学术的桥梁 拉近与权威的距离
高分辨率光学卫星影像高精度在轨实时云检测的流式计算
王密1,2
1. 武汉大学测绘遥感信息工程国家重点实验室, 湖北 武汉, 430079;
2. 地球空间信息协同创新中心, 湖北 武汉 430079;
3. 佛罗里达大西洋大学, 美国 佛罗里达 33431
收稿日期:2017-12-01;修回日期:2018-03-20
基金项目:国家自然科学基金(91438203;91638301;91438111;41601476)
第一作者简介:王密(1974—), 男, 博士, 教授, 研究方向为高分辨率光学遥感卫星数据处理。E-mail:wangmi@whu.edu.cn
通信作者:张致齐, E-mail: zzq540@whu.edu.cn
摘要:本文重点阐述基于机器视觉的智能摄影测量的效率基础问题之二:高精度影像在轨实时云检测方法。随着技术发展,数据获取能力不断提升,待处理的数据量呈爆炸式增长;同时,对处理精度需求的提升,导致所需计算量的不断增长,二者凸显了智能摄影测量面临的效率问题。对光学卫星影像而言,高达50%的平均云覆盖率严重制约了高效精准在轨智能摄影测量的实现。针对于此,本文结合机器视觉中“自底向上”的图像理解控制策略,提出一种可供借鉴的基于流式计算的高分辨率光学卫星影像高精度在轨实时云检测方法,采用适合在轨搭载的嵌入式GPU实现实时流式计算,为后续的智能摄影测量处理提供输入。本文方法采用不依赖外存的快速处理机制,对持续流入的数据实时分块,通过负载均衡机制将数据块依次分发至各个单元并行处理,从而实现“流入、处理、流出”的实时处理。利用高分二号数据对本文方法进行试验验证,结果表明本文方法在显著提高云覆盖区域检测精度的同时,综合加速比达14,可满足在轨实时处理需求。
关键词:机器视觉 智能摄影测量 云检测 流式计算 在轨实时处理
Stream-computing Based High Accuracy On-board Real-time Cloud Detection for High Resolution Optical Satellite Imagery
WANG Mi1,2
Abstract: This paper focuses on the time efficiency for machine vision and intelligent photogrammetry, especially high accuracy on-board real-time cloud detection method.With the development of technology, the data acquisition ability is growing continuously and the volume of raw data is increasing explosively.Meanwhile, because of the higher requirement of data accuracy, the computation load is also become heavier.This situation makes time efficiency extremely important.Moreover, the cloud cover rate of optical satellite imagery is up to approximately 50%, which is seriously restricting the applications of on-board intelligent photogrammetry services.To meet the on-board cloud detection requirements and offer valid input data to subsequent processing, this paper presents a stream-computing based high accuracy on-board real-time cloud detection solution which follows the "bottom-up" understanding strategy of machine vision and uses multiple embedded GPU with significant potential to be applied on-board.Without external memory, the data parallel pipeline system based on multiple processing modules of this solution could afford the "stream-in, processing, stream-out" real-time stream computing.In experiments, images of GF-2 satellite are used to validate the accuracy and performance of this approach, and the experimental results show that this solution could not only bring up cloud detection accuracy, but also match the on-board real-time processing requirements.
Key words: machine vision intelligent photogrammetry cloud detection stream computing on-board real-time processing
随着技术的快速发展,一方面待处理的遥感数据量呈爆炸式增长;另一方面,采用机器视觉方法与数字摄影测量结合提高处理精度的同时,所需的计算量也不断增长。二者综合影响凸显了智能摄影测量面临的效率问题,探索既能够合理解决精度与效率问题,又具有一定可推广性的处理方法具有重要的示范意义。在卫星遥感数据处理领域,传统的信息获取链路包括“获取数据-数据下传-地面集中处理-信息提取”四个环节,从卫星数据生成到地面有效信息获取时延长达数十分钟,信息获取时效性较低。为充分利用有限传输带宽和卫星过境时间窗口、缩短信息获取时延,需要建立“卫星获取并处理数据-有效信息下传分发”的二级信息获取链路,将传统的地面处理与信息提取算法迁移到星载计算平台[1-2],利用机器视觉与数字摄影测量方法实现在轨实时处理与信息提取,从而充分优化星地数据传输链路[3],为未来“对地观测脑”的构建做出有益的探索[4]。再者,星载计算平台的体积、功耗受到严格限制,处理能力有限,更加凸显了其面临的处理效率问题。
在遥感数据在轨处理方面,美国的NEMO卫星搭载了COIS海岸成像光谱仪与自适应光谱识别系统ORASIS,可生成并直接下传海岸描述信息[5]。澳大利亚的FedSat卫星搭载了名为HPC-1的可重构在轨处理原型系统,可利用星上光学载荷生成的数据发现并监测自然灾害[6]。此外,一些试验性的基于FPGA的在轨处理系统也实现了特征点识别与提取等功能[7]。
现有的在轨处理通常采用DSP+FPGA的方式实现,但其扩展性较差、算法实现难度大、性能不强,难以满足多样化的智能摄影测量处理需求。与此同时,计算硬件的快速发展,特别是功耗低、性能强、开放性好的嵌入式GPU的问世和持续发展为遥感数据在轨实时处理带来了新的可行方案。中科院遥感与数字地球研究所已将嵌入式GPU应用于高光谱数据的异常检测,初步验证了在轨搭载的可行性[8]。
对于光学卫星遥感影像在轨实时处理而言,光学卫星遥感影像平均云覆盖率高达50%,严重制约了在轨智能摄影测量的实现,使得高精度的实时云检测问题成为了待解决的重要问题。传统的多光谱阈值云检测算法执行效率高,但检测精度难以满足高精度信息处理需求;而基于模式识别的算法计算量大、耗时长,难以满足实时性需求[9]。针对此问题,本文结合机器视觉中“自底向上”的图像理解控制策略,提出一种基于流式计算的高分辨率光学卫星影像高精度在轨实时云检测方法,采用适合在轨搭载的嵌入式GPU实现实时流式计算,为后续的智能摄影测量处理提供输入的同时,也为后续处理提供可供借鉴的高性能处理方案。本文选用高分二号光学影像对本文方法进行验证。
1 高分辨率光学影像高精度云检测方法
高分辨率光学卫星影像的高精度云检测主要处理流程如图 1所示:①地面定期收集样本数据,计算并上注相对辐射校正参数;②流式计算平台使用上注的校正参数,对流入的原始影像进行运算,输出均匀影像;③流式计算平台对均匀影像应用基于SLIC的云检测算法,输出二值化结果。
图选项 |
1.1 高分辨率光学影像辐射校正
主流光学卫星大多采用TDICCD线阵推扫的成像模式,由于探元之间存在固有的响应不一致[10],且在轨运行后受卫星温度变化、应力释放、器件老化退化等因素影响,易导致探元特性进一步发生变化[11-12],使得相机输出的原始影像带有条带噪声。因此,需要对原始数据进行辐射校正,为高精度云检测和后续处理提供高质量的输入数据[13]。其主要原理如下
式中,DNiraw为相机第i号探元输出的原始灰度值;DNicali为校正后第i号探元对应的灰度值;Bi为第i号探元的偏移值;NGi为第i号探元的归一化增益。各探元增益与偏移的求取精度决定了最终均一化辐射校正的效果。增益与偏移主要由卫星在轨期间通过选取样本影像采用直方图匹配的策略求取[14]。
1.2 基于SLIC超像素高精度云检测
相对于中低分辨率遥感影像,高分辨率遥感影像在拥有更清晰的轮廓形状、更显著的纹理特征的同时也增加了影像噪声对影像分割的影响[15-16]。基于SLIC超像素分割算法具有良好的抗噪性,适合应用于高分辨率遥感影像的处理。超像素是指具有相似纹理、颜色、亮度等特征的相邻像素构成的图像块[17],超像素生成算法主要包括分水岭算法[18]、区域增长算法、基于图的图像分割算法[19]和SLIC算法[20]等,相对于其他超像素生成算法,SLIC算法生成的超像素具有更好的边界依附性、更加规则紧凑的形状,并且SLIC算法在具有良好抗噪性的同时,可根据具体情况改变参数以获得更好的效果[21]。SLIC算法结合机器视觉中“自底向上”的原理,通过将彩色图像转换为CIELAB颜色空间和XY坐标下的5维特征向量,并对其构造度量标准,进一步对图像像素进行局部聚类生成超像素。其具体步骤如下:
1.2.1 初始化种子点
假设影像有N个像素,将影像分为K个大小均匀的超像素,则每个超像素的大小为N/K,且每个种子点的距离近似为
1.2.2 相似度衡量
对于每个像素点,计算其与种子点之间的相似程度,将最相似种子点的标签赋给该像素。不断迭代该过程直到收敛。相似度的衡量关系如下
式中,[lk ak bk xk yk]为种子点的5维特征向量;[li ai bi xi yi]为待判断像素点的5维特征向量;dlab为像素点间的颜色差异;dxy为像素点间的空间距离;D为两个像素的相似度;S为种子点的间距;m为平衡参数,用来衡量颜色值与空间信息在相似度衡量中的比重。D越小则像素越相似。
对每个种子点聚类时,只在以种子点为中心的2S×2S区域内搜索相似点,如图 2所示。
图选项 |
1.2.3 孤立像素联通及光谱阈值判断
SLIC算法有时会使属于同一标签的超像素内的像素不连通产生孤立像素。需要在聚类分割后进行处理,使孤立像素被重新分配到空间距离最近的超像素中,从而生成紧凑且连通的超像素。
用SLIC算法对影像进行分割后,需要进一步求取各个超像素的光谱属性值。其计算公式如下
式中,RS、GS、BS为超像素的光谱属性值;Rk、Gk、Bk为超像素包含像素的光谱属性值;n为超像素包含像素的个数。
采用式(6)将超像素光谱属性转化为灰度光谱值Gray,进而与光谱阈值进行判断,对高分二号数据而言,经多次试验得到光谱阈值为800时,可以较好地提取影像中的云层区域。当超像素的灰度属性大于等于800时,将超像素所对应的二值影像的像素灰度值设为255;反之,则设为0。从而实现云层区域的提取。
2 在轨实时流式计算架构
由于选用的嵌入式GPU平台具有异构的计算单元,故本文采用了一种“多模组-多线程-CUDA”三级协作的流式计算架构,并在此架构下实现了算法的迁移与深度优化,以实现高效的“流入、处理、流出”的在轨实时流式计算。
2.1 流式计算架构
对应用于高分二号高精度云检测算法而言,单嵌入式模组的处理时间大于相机产生数据的时间(约为4倍关系)。在实时处理系统中,输入速率大于处理速率会导致数据积累并最终导致系统崩溃。因此,必须使用多个嵌入式模组实现流式计算,根据单模组性能试验结果,所需模组数可由式(7)估算
进一步的,根据嵌入式模组架构特点,各模组内采用多线程并行与CUDA并行协作的并行处理策略,模组间采用数据并行处理策略,整体处理流程如图 3所示。
图选项 |
对于线阵推扫成像的高分二号而言,相机逐行生成并输出原始数据。将每865行数据作为一个待处理数据段,平均每个标准景影像划分为8段,每个嵌入式模组依次处理1段数据,其中1个ARM64核与256个CUDA核执行CUDA并行处理,另外5个ARM64核执行多线程并行处理,多线程并行与CUDA并行各自负责交替处理一小格数据。数据分段策略与处理过程如图 4所示。
图选项 |
2.2 嵌入式算法迁移与优化
由于嵌入式GPU平台包含异构处理单元:包括适用于处理循环、迭代操作的ARM64核及适用于处理大规模并行运算的CUDA核。对于重采样、融合等并行度高、局部性强的影像处理算法,相对于多线程并行方式,采用CUDA并行方式具有极为明显的性能优势。而基于SLIC超像素的云检测算法既有一定程度的并行性,又包含了迭代和特征空间相关性的处理,单纯采用CUDA并行难以获得很好的效果。经试验验证,在嵌入式GPU平台上,充分优化的多线程并行与CUDA并行能达到相近的性能。各子算法特点分析见表 1。
算法模块 | 计算负载 | 并行度 | 是否迭代 | 特征相关性 |
均一化辐射校正 | 轻 | 高(逐像素) | 否 | 无 |
RGB到LAB变换 | 轻 | 高(逐像素) | 否 | 无 |
初始化种子点 | 重 | 中(逐小块) | 是 | 中 |
相似度衡量 | 重 | 高(逐像素) | 是 | 强 |
孤立像素连通 | 中 | 低 | 否 | 强 |
超像素光谱阈值判断 | 轻 | 中(逐小块) | 否 | 弱 |
表选项
为充分利用嵌入式GPU平台硬件资源,参考地面处理中成功的异构计算并行策略[22],本文采用多线程并行与CUDA并行协作的策略进行处理。对多线程并行处理而言,采用OpenMP的方案仅需要在原有代码的基础上增加一系列编译指令即可实现多线程,底层的细节操作均由OpenMP自动完成[23],故本文选用OpenMP作为多线程并行的实现手段。
对于嵌入式GPU平台上的CUDA并行处理而言,针对特定算法的优化是实现高性能的关键,主要包括实现优化与占用率优化、访存优化等。
2.2.1 实现优化与占用率优化
实现优化是优化CUDA并行处理效率的重要因素。主要包括以下几个方面。
(1) 定义尽可能少的变量,尽可能地重用变量,以节省寄存器资源;
(2) 展开子函数,避免函数调用开销;
(3) 只在变量使用时才定义变量,以利于编译器充分优化寄存器使用;
(4) 尽量避免分支和循环语句,对于确定次数的循环,使用“#pragma unroll”指令展开[24]。
经过优化后,核函数的寄存器占用显著下降。然而由于CUDA处理单元的寄存器的总数存在限制,为了充分利用计算资源,达到100%的资源占用率(Occupancy), 需要使用“-maxrregcount”编译选项限制核函数的最大寄存器用量为32。此外,如图 5所示,核函数提交的线程块大小也对占用率有显著的影响,本文中选择采用256大小的线程块(16×16)。
图选项 |
2.2.2 访存操作优化
常规GPU平台中,执行CUDA程序的典型流程包括:从主机内存中拷贝数据块到设备内存(H2D操作)、CUDA核执行运算、从设备内存中拷贝运算结果到主机内存(D2H操作)。而嵌入式GPU平台使用统一的内存区域,沿用传统的方式会因多余的内存操作导致性能浪费。使用“零复制内存”或“统一内存”可避免这种情况,二者不同之处在于前者无法利用处理核的缓存(Cache),反而会造成性能的降低,而后者不存在此问题,能在嵌入式GPU平台中有效提高访存性能。其优化原理如图 6所示。
图选项 |
此外,为充分利用层次化的CUDA内存访问体系,对于不使用或很少使用“共享内存”(Shared Memory)的核函数,使用“cuda Func Set Cache Config()”方法指定特定的核函数将片上内存更多地分配为L1缓存,可提高整体执行效率。除此之外,“常量内存”也被用来存放SLIC云检测算法步骤中用到的邻域向量,以充分利用其广播特性,优化访问性能。
3 试验与分析3.1 试验数据与测试硬件
高分二号发射于2014年8月19日,是我国自主研制的首颗分辨率优于1 m的光学遥感卫星,搭载了2台高分辨率1 m全色、4 m多光谱相机,具有亚米级分辨率、高定位精度、快速姿态机动能力等特点。本文试验选用两组典型的含云多光谱数据,用于验证本文方法的检测精度与性能,数据具体信息如表 2所示。
试验数据 | 地理位置 | 分辨率/m | 影像尺寸/像素 | 云类型 |
试验1 | 东经32.3°北纬3.3° | 4 | 7300×6908 | 朵云、厚云 |
试验2 | 东经115.4°北纬41° | 4 | 7300×6908 | 片云、薄云 |
表选项
如前所述,本文选用4组NVIDIA Jetson TX2嵌入式GPU模组构建模拟在轨流式处理平台。每组NVIDIA Jetson TX2嵌入式GPU模组包括6个ARM64核心(双核Denver2+四核CortexA57)和256个兼容6.2版计算能力的CUDA核心。在单模组理论浮点性能达750 GFlops的同时,热设计功耗(TDP)仅为7.5 W,其高性能、低功耗、小体积的特性使其具备很高的在轨应用潜力[25]。与此同时,本文选用CPU热设计功耗85 W的塔式PC服务器Dell PowerEdge T630 (Intel Xeon E5-2620 v3,128 GB RAM,21 TB RAID5)作为对比测试平台,以从性能和功耗两方面综合对比。
3.2 检测精度对比试验
多光谱阈值云检测方法是一种常用的云检测方法,本节以目视判别结果为基准,采用查准率和错误率作为度量标准,通过试验对基于SLIC超像素的云检测方法与多光谱阈值法在云检测精度方面进行定性与定量评价[26]。查准率和错误率公式如下
式中,PR为查准率;TC为准确识别的云像元数;FA为识别为云像元总数;ER为错误率;TF为云误判定为非云的像元数;FT为非云误判为云的像元数;NA为总像元数。
本节通过使用两组数据对基于SLIC超像素的云检测方法进行精度评价。图 7中(a)为试验1的原图,(b)为(a)影像的目视解译结果,(c)为(a)影像的多光谱阈值算法检测结果,(d)为(a)影像的本文算法检测结果。图 2(a)为试验2的影像原图,(b)为(a)影像的目视解译结果,(c)为(a)影像的多光谱阈值算法检测结果,(d)为(a)影像的本文算法检测结果。
图选项 |
如图 7所示,在试验1中矩形框圈定的区域内,由于地面光照高反射地物的影响,多光谱阈值算法将其检测为云层区域,而本文方法通过SLIC超像素分割,充分考虑了原始像素间的关联性,可以较好地消除此类地物对云检测结果的影响。从整体上而言,本文方法的检测结果与目视解译结果更为接近。
如图 8所示,在试验2中矩形框圈定的区域内,一方面多光谱阈值算法将地面高反射地物误检测为云层区域,另一方面对于试验2中的片云、薄云区域,本文方法有相对较好的检测效果。
图选项 |
如表 3所示,本文方法查准率、错误率均优于传统多光谱阈值方法。说明相对于传统多光谱阈值方法,本文方法具有更好的云识别能力和更高的云检测精度。
结果 | 试验1 | 试验2 | |||
多光谱阈值法 | 本文方法 | 多光谱阈值法 | 本文方法 | ||
查准率 | 0.824 6 | 0.874 5 | 0.966 0 | 0.973 5 | |
错误率 | 0.034 7 | 0.030 0 | 0.046 1 | 0.045 1 |
表选项
3.3 处理性能对比试验
为验证单模组嵌入式GPU平台下采用多线程并行与CUDA并行协作的加速策略的合理性,统计处理耗时如表 4所示。
s | |||
数据 | 耗时 | ||
仅多线程并行 | 仅CUDA并行 | 多线程并行+CUDA并行 | |
0 | 20.785 | 23.971 | 11.303 |
1 | 20.297 | 22.575 | 10.754 |
表选项
为了客观评价性能优化效果,假设算法总的计算量为M,优化前后耗时分别为Ts和Te,加速比指标S定义如下
对于在轨处理系统而言,相同性能下,器件的功耗是非常重要的考虑因素。假设PC服务器与嵌入式平台的功耗分别为Ps和Pe,考虑能耗的综合加速比指标定义如下
由于特定应用在特定平台上执行期间的能耗难以精确统计,本文直接采用不同平台核心部件的热设计功耗值作为Ps和Pe,分别为85 W和30 W(7.5×4组)。相应的,Spower值虽然并不十分严谨,但是仍然具备重要的参考意义。表 5统计了各组、各数据段的生成,表 6统计了处理耗时及加速比,其中数据生成耗时由行数乘以该组数据的行积分时间计算而来。
数据段 | 数据生成耗时/s | 处理耗时/s | 处理模组 |
第0景第0段 | 0.403 | 1.439 | 0 |
第0景第1段 | 0.403 | 1.501 | 1 |
第0景第2段 | 0.403 | 1.462 | 2 |
第0景第3段 | 0.403 | 1.454 | 3 |
第0景第4段 | 0.403 | 1.443 | 0 |
第0景第5段 | 0.403 | 1.427 | 1 |
第0景第6段 | 0.403 | 1.483 | 2 |
第0景第7段 | 0.396 | 1.417 | 3 |
第1景第0段 | 0.399 | 1.470 | 0 |
第1景第1段 | 0.399 | 1.421 | 1 |
第1景第2段 | 0.399 | 1.418 | 2 |
第1景第3段 | 0.399 | 1.449 | 3 |
第1景第4段 | 0.399 | 1.462 | 0 |
第1景第5段 | 0.399 | 1.399 | 1 |
第1景第6段 | 0.399 | 1.423 | 2 |
第1景第7段 | 0.394 | 1.408 | 3 |
表选项
数据 | 数据生成耗时/s | 处理耗时 /s | 服务器耗时/s | S | Spower |
第0景 | 3.217 | 1.417* | 7.184 | 5.070 | 14.365 |
第1景 | 3.187 | 1.408* | 6.957 | 4.941 | 14.000 |
注:处理时间按照“处理完毕时刻-数据生成完毕时刻”计算,并非各段数据处理时间之和。 |
表选项
上述流式计算处理时间线如图 9所示。结果表明,本文提出的解决方案,对于相机持续流入的原始影像数据不存在数据堆积现象,可满足在轨实时处理需求。
图选项 |
3.4 算法迁移正确性
为验证本文方案的正确性,以PC服务器输出的二值影像为真值,统计其与嵌入式GPU平台输出的结果间的均方根误差
式中,DNij(PC)和DNij(Onboard)分别是PC平台与在轨平台输出的二值影像的像素值,测试数据的均方根误差统计值如表 7所示,均为0,表示嵌入式GPU平台输出结果与PC平台输出结果一致,算法迁移与优化有效。
数据 | 均方根误差 |
0 | 0 |
1 | 0 |
表选项
4 结论
在机器视觉与数字摄影测量相结合的背景下,数据量和计算量的同时增长凸显了智能摄影测量面临的效率问题。探索既能够合理解决精度与效率问题,又具有一定可推广性的处理方法具有重要的示范意义。本文以对精度与效率同时敏感的卫星在轨实时数据处理领域为例,针对光学卫星影像云覆盖率高的特点,结合机器视觉中“自底向上”的图像理解控制策略,提出一种基于流式计算的高分辨率光学卫星影像高精度在轨实时云检测方法,采用适合在轨搭载的嵌入式GPU实现实时流式计算,为后续的智能摄影测量处理提供输入的同时,也为后续处理提供可供借鉴的高性能处理方案。在此前提下,完成了高分辨率光学影像预处理与基于SLIC超像素的高精度云检测等算法的移植和深度优化工作,采用了一种“多模组-多线程-CUDA”三级协作的流式计算架构,处理性能获得了显著的提升。
选用两组典型的高分二号含云高分辨率光学卫星多光谱影像,从云检测精度、处理性能、算法迁移正确性等方面对本文方案作了验证。结果表明,在云检测精度方面,相对传统的多光谱阈值云检测算法,本文采用的基于SLIC超像素的云检测算法在云检测精度和云识别能力方面具有更好的效果;在处理性能、功耗、体积等方面,本文提出的嵌入式流式计算方案相对传统PC服务器具有明显的优势,综合加速比达14以上,具备在轨搭载的潜力。
由于嵌入式GPU平台本身具有易于编程实现、开放性与可扩展性好等特点,针对特定的算法和流程选择数量合适的模组,并制定合理的数据分块策略后,本文提出的流式处理方案可进一步应用于其他机器视觉与数字摄影测量结合的高精度处理算法的效率提升。
【引文格式】王密, 张致齐, 董志鹏, 等. 高分辨率光学卫星影像高精度在轨实时云检测的流式计算[J]. 测绘学报,2018,47(6):760-769. DOI: 10.11947/j.AGCS.2018.20170618
精
彩
回
顾
院士论坛︱李德仁院士:展望大数据时代的地球空间信息学(论文版)
院士论坛| 杨元喜:我国海洋大地测量基准与海洋导航技术研究进展与展望(英文版)
院士论坛| 龚健雅:高分辨率光学卫星遥感影像高精度无地面控制精确处理的理论与方法
权威 | 专业 | 学术 | 前沿
微信投稿邮箱 | song_qi_fan@163.com
微信公众号中搜索「测绘学报」,关注我们,长按上图二维码,关注学术前沿动态。
欢迎加入《测绘学报》作者QQ群: 297834524
进群请备注:姓名+单位+稿件编号